package cn.hubujyjs.lp.controller;

import cn.hubujyjs.lp.bo.LoginForm;
import cn.hubujyjs.lp.bo.UpdateUserBo;
import cn.hubujyjs.lp.domain.User;
import cn.hubujyjs.lp.service.UserService;
import cn.hubujyjs.lp.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

@Slf4j
@RestController()
@RequestMapping("/api/user")
public class UserController {
    @Autowired
    private UserService userService;

    /**
     * 用户登录
     * @param loginForm 登录表单
     * @return token
     */
    @PostMapping("/login")
    public R<String> login(@RequestBody LoginForm loginForm){
        String email = loginForm.getEmail();
        String verificationCode = loginForm.getVerificationCode();
        return userService.login(email,verificationCode);
    }

    /**
     * 发送验证码
     * @param email 邮箱
     * @return null
     */
    @GetMapping("/code")
    public R<Object> code(@RequestParam String email){
        return userService.code(email);
    }

    /**
     * 查询用户信息
     * @return 用户实体
     */
    @GetMapping("/info")
    public R<User> info(){
        return userService.info();
    }

    /**
     * 上传头像
     * @param updateUserBo 业务对象
     * @return null
     */
    @PostMapping("/update")
    public R<Object> update(@RequestBody UpdateUserBo updateUserBo){
        return userService.updateUser(updateUserBo);
    }

    /**
     * 退出登录
     * @param request Httprequest请求
     * @return null
     */
    @GetMapping("/logout")
    public R<Object> logout(HttpServletRequest request){
        return userService.logout(request);
    }

}
